import 'dart:io';

import 'package:flutter/services.dart';

import 'main.dart';

class FileReceiver {
  Future<String?> _getFileUri(MethodChannel platform) async {
    try {
      ///是 Flutter 中用于从原生平台（iOS 或 Android）向 Flutter 主动请求数据的方式。
      ///Flutter 主动调用原生代码中的某个方法，并等待原生端返回结果。
      final String? fileUri = await platform.invokeMethod('getFileUri');
      return fileUri;
    } on PlatformException catch (e) {
      return null;
    }
  }

  Future<String?> readFile() async {
    String? fileUri = await _getFileUri(platform);
    if (fileUri != null) {
      File file = File(fileUri);
      String contents = await file.readAsString();
      return contents;
    } else {
      return null;
    }
  }

  ///监听来自原生端的数据
  static void listen(Function(String) callback) {
    // 监听来自原生的文件路径
    platform.setMethodCallHandler((call) async {
      if (call.method == 'getFileUri') {
        // 接收到原生传递的文件 URI
        String fileUri = call.arguments; // 这是传递的文件路径

        // 读取文件内容
        final file = File(fileUri);
        String contents = await file.readAsString();
        callback(contents);
      }
    });
  }
}
